---@class DIYUtility
local Utility = require "packages/diy_utility/_base"

-- 不用return


--- SkillReady 蓄势技的数据
---@class SkillReadyDataSpec
---@field public who ServerPlayer @ 拥有此技能的角色
---@field public skill Skill @ 有关的蓄势技
---@field public reason? string @ 进入蓄势的原因 useskill（使用技能）, 蓄势完成原因 shuffle （洗牌）, discard （弃牌）
---@field public cards? integer[] @ 完成蓄势时弃置的牌



---@class Utility.SkillReadyData: SkillReadyDataSpec, TriggerData
Utility.SkillReadyData = TriggerData:subclass("SkillReadyData")

--- 蓄势技 TriggerEvent
---@class Utility.SkillReadyTE: TriggerEvent
---@field public data Utility.SkillReadyData
Utility.SkillReadyTE = TriggerEvent:subclass("SkillReadyEvent")

--- 蓄势开始（进入蓄势状态，无法使用技能）
---@class Utility.SkillReadyStart: Utility.SkillReadyTE
Utility.SkillReadyStart = Utility.SkillReadyTE:subclass("Utility.SkillReadyStart")

--- 蓄势结束（可以使用技能）
---@class Utility.SkillReadyFinish: Utility.SkillReadyTE
Utility.SkillReadyFinish = Utility.SkillReadyTE:subclass("Utility.SkillReadyFinish")

---@alias SkillReadyTrigFunc fun(self: TriggerSkill, event: Utility.SkillReadyTE,
---  target: ServerPlayer, player: ServerPlayer, data: Utility.SkillReadyData):any

---@class SkillSkeleton
---@field public addEffect fun(self: SkillSkeleton, key: Utility.SkillReadyTE,
---  data: TrigSkelSpec<SkillReadyTrigFunc>, attr: TrigSkelAttribute?): SkillSkeleton
